home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_11 / allison / str.h < prev    next >
C/C++ Source or Header  |  1994-09-05  |  1KB  |  60 lines

  1. LISTING 1 - A simple string class
  2. // str.h
  3.  
  4. #include <stddef.h>
  5.  
  6. class ostream;
  7. class istream;
  8.  
  9. class string {
  10. public:
  11.      string();
  12.      string(const char*);
  13.     ~string();
  14.  
  15.      friend string operator+(const string&, const string&);
  16.      string& operator+=(const string&);
  17.      friend int operator==(const string&, const string&);
  18.      friend int operator!=(const string&, const string&);
  19.      friend ostream& operator<<(ostream&, const string&);
  20.      friend istream& operator>>(istream&, string&);
  21.      char& operator[](size_t);
  22.      size_t length() const;
  23.  
  24. private:
  25.      char* data;
  26.      size_t count;
  27.      void clone(const char *);
  28. };
  29.  
  30. inline string::string()
  31. {
  32.      *(data = new char[1]) = '\0';
  33.      count = 0;
  34. }
  35.  
  36. inline string::string(const char *s)
  37. {
  38.      clone(s);
  39. }
  40.  
  41. inline string::~string()
  42. {
  43.      delete [] data;
  44. }
  45.  
  46. inline int operator!=(const string& s1, const string& s2)
  47. {
  48.      return !(s1 == s2);
  49. }
  50.  
  51. inline char& string::operator[](size_t pos)
  52. {
  53.      return data[pos];
  54. }
  55.  
  56. inline size_t string::length() const
  57. {
  58.      return count;
  59. }
  60.